/*
 * Copyright (C) 2012 nutmotion <simonotmanuel@gmail.com>
 * Originally released under the tradeUplan project (wiki is at Expression project.wiki is undefined on line 5, column 85 in Templates/Licenses/license-gpl30.txt.)
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
package com.nutmotion.service;

import com.nutmotion.application.EMF;
import com.nutmotion.model.jpa.Timeframe;
import java.util.List;
import javax.persistence.EntityManager;

/**
 *
 * @author nutmotion <simonotmanuel@gmail.com>
 */
public class TimeframeService {
    private EntityManager em;
    
    public TimeframeService() {
        this.em = EMF.createEntityManager();
    }
    
    /**
     * Finds matching timeframe(s) in the database
     * @param tradeToMatch
     * @return 
     */ 
    public List<Timeframe> match(Timeframe timeframeToMatch) {
                SelectClauseStringBuilder selectClauseStringBuilder = new SelectClauseStringBuilder();
        FromClauseStringBuilder fromClauseStringBuilder = new FromClauseStringBuilder();
        WhereClauseStringBuilder whereClauseStringBuilder = new WhereClauseStringBuilder();                
        
        //First we build the SELECT clause
        selectClauseStringBuilder.append("t");
        
        //then the FROM clause
        fromClauseStringBuilder.append("Timeframe t").append("JOIN t.user u");
        
        //then the WHERE clause
        whereClauseStringBuilder.append("t.name", timeframeToMatch.getName());
        whereClauseStringBuilder.append("u.nickname", timeframeToMatch.getUser().getNickname());
        
        System.out.println(selectClauseStringBuilder+" "+fromClauseStringBuilder+" "+whereClauseStringBuilder);
        return (List<Timeframe>) em.createQuery(selectClauseStringBuilder+" "+fromClauseStringBuilder+" "+whereClauseStringBuilder).getResultList();        

    }
}
